1
Escolha as Linhas a Manter
DSAI2202Lab 7: Reasoning Across Relationships

O registo e o LMS da UniLearn não contêm os mesmos IDs de estudantes. A equipa precisa de vários relatórios, cada um com uma resposta diferente para «Que linhas de origem devem aparecer?»

Reutilize a Base de Dados do Laboratório 6

Se já executou lab6_7_setup.sql no Laboratório 6, mantenha esses dados. Caso contrário, abra no pgAdmin o ficheiro de configuração partilhado fornecido pelo seu tutor e execute-o uma vez. Selecione lab6_7 em cada nova ligação da Query Tool.

Comece com o Join que Já Conhece

  1. Inspecione students e lms_roster: 22 IDs do registo e 6 IDs do LMS.
  2. Execute o INNER JOIN da regra de correspondência do Laboratório 6.
  3. Identifique os quatro IDs presentes em ambas as origens.
  4. Explique por que este resultado não pode ser uma lista completa de nenhuma das origens.

Cinco Pedidos de Relatório

Liste as contas partilhadas; mantenha todos os estudantes do registo; mantenha todas as contas do LMS; reconcilie ambas as origens; gere opções de estudante–curso. Irá escrever consultas INNER, LEFT, RIGHT, FULL e CROSS JOIN para estes pedidos.

✍️ Preveja o Contexto em Falta
S103 está registado, mas não tem conta no LMS. S901 foi importado para o LMS, mas está ausente do registo. Onde se encaixaria cada um num relatório completo?
Contas partilhadas
SET search_path TO lab6_7;

SELECT s.student_id AS registry_id, s.student_name,
       r.student_id AS lms_id, r.lms_name
FROM students AS s
INNER JOIN lms_roster AS r
  ON s.student_id = r.student_id
ORDER BY s.student_id;
Verifique os IDs correspondidos

Quatro linhas: S101, S102, S105 e S121. Cada ID é único em ambas as tabelas, pelo que cada par correspondido aparece uma vez. Este relatório contém apenas contas partilhadas.

A Uma (S121) tem uma conta no LMS, apesar de não ter inscrições. Uma correspondência de conta não prova a participação num curso.